# include <iostream>

using namespace std;

void swap(int arr[10], int sz)//不需要返回值只需要排序
{
	/*我们首先知道了sz里面储存的是元素个数
	那我们是否需要知道假设有sz个元素，但如果两两对比的话有多少次对比呢？(sz-1)
	但我们知道一次排序完成实际上是排序了一个数字而已
	那下次循环我们需要排列的次数是多少呢？
	第一次是10个元素-1 等于9次对比，第二次就是9个元素，-1就是八次对比
	如果看出规律了，下次排序的次数就是n个元素-1再减去当此循环i-1；
	当i=0，n-1-i= 9, i++,下一次就是9个元素，9个元素-1次对比因为少了一个数字，再减去i
	这样就得到了9个元素-1就是8次对比*/
	int i = 0;
	int j = 0;
	for (i = 0; i < sz - 1; i++)
	{
		for (j = 0; j < sz - 1 - i; j++)
		{
			//既然我知道了对比次数和每次都会少一个元素-i的对比次数
			//那我们现在要知道如果第一个数字比第二个数字大的话第一个元素就右移动
			int temp = 0;
			if (arr[j] > arr[j + 1])
			{
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;

			}

		}
		
	}
}

//接下来我们需要一个打印已经排序好的数组
void print(int arr[10], int sz)
{
	for (int j = 0; j < sz; j++)
	{
		cout << arr[j] << " ";
	}
}


int main()
{
	//我想写一个冒泡排序的程序
	int arr[10] = { 10,7,8,9,4,3,7,22,10,89 };
	//首先我得知道一个数组中有多少个元素
	int sz = sizeof(arr) / sizeof(arr[0]);
	//然后我需要写一个函数负责让数组中的元素以升序排列
	swap(arr, sz);//数组名本身就是数组中首元素的地址
	print(arr, sz);

	return 0;
}